Python入門 2019 3 2

 数年前、10回に分けて、
「Python入門」を掲載していましたが、
読みやすいように1本にまとめました。
 プログラミングに興味がない人にも、
毎号、話の後半は、「昔話」となっていますので、
面白おかしく読めると思います。
また、当時の世相を知ることができると思います。
 P()11から始まるのは、
別途、「C言語入門」(C()1からC()10)を掲載していたからです。

プログラミング P()11 2017 12 23

「コンパイルとインタプリタ」
 今週から、プログラミング言語の「Python」(パイソン)について、
書いていきたいと思います。
 このプログラミング言語は、
「C言語」を習得した人にとっては、違和感を感じるかもしれません。
 一方、初めてプログラミング言語を学習する人にとっては、
Pythonは、非常に理解しやすい言語で、楽に学習できるでしょう。
 Pythonは、ほかのプログラミング言語と違って、
独特な書式や文法が少ないからです。
 もちろん、Pythonにも書式や文法がありますが、
わかりやすく、なじめるようなものになっています。
 さて、「C言語」を習得した人にとっては違和感を感じるは、
Pythonが、インタプリタ言語であるということです。
 プログラミングにおいては、
プログラムをエディタで書いたら、
「コンパイラ」でコンパイルしてから実行するというのが普通ですが、
Pythonがインタプリタ言語なので、そういう手順がないのです。
 もちろん、Pythonも、プログラミング言語を、
コンピューターが理解できる「機械語」への変換がありますが、
あまり、それを意識しないようになっています。
 インタプリタとは、昔のプログラミング言語である「BASIC」を思い出しますが、
一行ずつ「機械語」へ変換しながら実行していくというものです。
 もし、「コンパイラ」で、プログラムをいっぺんに「機械語」に変換して、
大量のエラーが出てしまったら、初心者はパニックになってしまうでしょう。
 そういうわけで、初心者にとって、
一行ずつ「機械語」へ変換しながら実行するのがよいのです。
 そうすると、こう思う人がいるかもしれません。
「それでは、Pythonは、学習用のプログラミング言語であり、実用性はないのか」
 しかし、今流行りの「インスタグラム」は、
Pythonを使って、プログラミングをしたと聞いています。
 このように大規模なプログラミングもできるうえに、
最近、話題になるAIプログラミングにも有力です。
 もちろん、C言語でも、AIプログラミングは問題ないですが、
Pythonのほうが、「書きやすい」と言えるでしょう。
 そういうわけで、Pythonは、初心者向けの学習用にも向いているうえに、
大規模なプログラミングにも向いているということで、
今のところ、万能のプログラミング言語と言えるかもしれません。
 それでは、続きは次号で。

「枯れた時代」
 昔、Windows95が全盛の時代に、
「WindowsNT」というOSがありました。
 Windows95が家庭向けやゲーム向けだったのに対して、
WindowsNTは、業務用のOS、ビジネス向けのOSだったのです。
 Windows95は、「MS-DOS」や「Windows3.1」という遺産を引き継ぐために、
内部構造が複雑になってしまい、安定性に少し欠けると言われました。
 一方、WindowsNTは、そういう遺産を引き継ぐ必要がなかったために、
非常に安定して、本格的なOSとなりました。
 「枯れた」という言葉は、一般的にはマイナスのイメージですが、
技術の分野では、プラスの意味があります。
 「枯れた」とは、
技術的な問題点が出尽くしたという意味で使われます。
WindowsNTは、正に「枯れたOS」だったと思います。
 21世紀に入って、Windowsは、
バージョンアップされるたびに何もかも新しくなっていきますが、
WindowsNTのように、熟成させ、「枯れたOS」が出現してほしいと思います。


プログラミング P()12 2017 12 29

「PythonとC言語」
 それでは、Pythonの学習環境を整えていきましょう。
「Google」の検索で、「coding ground」と入力して検索してください。
検索結果の「Coding Ground - TutorialsPoint」をクリックしてください。
 そうすると、「coding ground」の「Development Environment」という画面が現れます。
この画面を、下へ、ひたすらスクロールすると、
「Advanced IDEs」というタイトルが現れます。
 ここで、Pythonのマークをクリックしてください。
「C++」の下にあります。
これで、Pythonの学習環境(開発環境)が現れます。
 この画面は、三つに分かれていますが、
上半分の右側が「エディタ」になっています。
以下のような文字が表示されていると思います。
# Hello World program in Python
print "Hello World!\n"
 この文字の上に、
「Execute」、「Share Code」、「main.py」と並んでいますが、
試しに「Execute」ボタンを押してみましょう。
 下の緑の画面に、
「Hello World!」と表示されたと思います。
これで、Pythonプログラムを実行したことになります。
 さて、実際に、Pythonプログラムを作ってみましょう。
まず、エディタ画面から、
「# Hello World program in Python
print "Hello World!\n"」を削除しましょう。
 ここで作成するプログラムは、
1から10まで合計すると、いくつになるかというプログラムです。
 「1+2+3+4+5+6+7+8+9+10」と書くと、長くなりますので、
「(1+10)*5」という公式を使いましょう。
 エディタの画面に、
「print((1+10)*5)」と入力してください。
 これで、「Execute」ボタンを押してみましょう。
そうすると、下の緑の画面に、
「55」と表示されたと思います。
 これをC言語で書くと、どうなるか。
#include <stdio.h>
int main()
{
printf("%d\n",(1+10)*5);
return 0;
}
 なんだか、C言語で書くと、長くなりますね。
それに括弧などの記号が多くて、
肝心の計算式が埋もれてしまいました。
 Pythonでは、一行で完成しました。
print((1+10)*5)
 ここが、Pythonの強みであり、
プログラミング学習に向いている言語だと言われるところです。
 初心者は、「()」や「{}」などをうっかり忘れるかもしれません。
あるいは、「()」や「{}」が気になって、
肝心の計算式の記述に専念できないかもしれません。
 Pythonには、そういう括弧がありませんので、
プログラミングに専念できるのです。

「HTMLって何?」
 これは、ホームページを作成する言語です。
実際に実物を見ると、以下のとおりです。
</HEAD>
<BODY text="#336633" bgcolor="#ccffcc" link="#0066cc" vlink="#009999" alink="#ff9900">
(以下、省略)
 なんだか、さっぱりわかりませんが、
昔は、「HTML言語」が得意な人が、
このような記号のようなものを書いて、
ホームページを作っていたのです。
 私も「HTML入門」という本を買ってきて、
悪戦苦闘しながら、ホームページを作った記憶があります。
 あの当時は、「猿でもわかるパソコン」とか、
「猿でもわかるWindows」という本が流行っていました。
さすがに、「HTML言語」は、猿には理解できなかったのでしょう。
 今は、ホームページ作成ソフトで作ることができます。
グラフィカルな作業で、美しいホームページを作成できますが、
ホームページ作成ソフトで「HTMLソース」を表示させると、
上記のような「HTML言語」が表示されます。
 プログラミングにおいても、
プログラム作成ソフトが、C言語プログラムを書いてくれると、
すごく楽になります。
 今や、苦労して「HTML言語」を使ってホームページを作ることはありませんが、
プログラミングの世界においては、C言語を駆使してプログラムを書いている状況でしょう。
Pythonで楽になったかもしれません。


プログラミング P()13 2018 1 6

「文字列というのが、わかりにくいかもしれません」
 普通は、「文字」と言うでしょうが、
プログラミングでは、「文字列」と言います。
 たとえば、「abc」というものを見れば、
普通は、「文字」があると言いますが、
プログラミングでは、「abc」という「文字列」があると言います。
 さらに、プログラミングでは、
単に「abc」と書いただけでは、
コンピューターが文字として認識してくれないのです。
 このような場合は、「"」で文字の両側を囲む必要があります。
つまり、「"abc"」と書く必要があります。
 実際に、「"」の有無で、どうなるかについて、
「cording ground」で確認してみましょう。
 まず、最初に「"」がないもので実行してみましょう。
print(abc)
 実行結果は、以下のとおりです。
「NameError: name 'abc' is not defined」
 次に、「"」があるもので実行してみましょう。
print("abc")
 これは、下の緑色の画面に、
「abc」と表示されました。
 さて、「文字列」の「列」が気になりますか。
実は、「"abc"」は、人間には文字の塊と認識されますが、
コンピューターは、「a」、「b」、「c」と文字が続いていると認識します。
だから、コンピューターにとっては、「文字列」となるのです。
 実は、プログラミングでは、「"abc"」という「文字列」から、
「a」、「b」、「c」という文字を一個ずつ取り出すことができます。

「結局、熱には勝てなかった」
 かつて、CPUには、スピード競争の時代がありました。
「Intel」と「AMD」というメーカーで技術競争があったのです。
 たとえば、「Pentium」というCPUは、
普及版では、75MHzで登場しましたが、それが133MHzになり、
さらに、350MHz、450MHz、ついに1GHzを超え、
その後、さらに加速して、「Pentium4」では軽く3GHzを超えました。
しかし、それ以上の高速化は難しいものとなりました。
 高速化すればするほど熱が発生するからです。
基本的に、電力というものは、熱になって消えていくのです。
 CPUの高速化によって、
「CPUの上で、目玉焼きができる」とまで言われたものです。
そのため、CPUの上には、「CPUクーラー」を装着して、冷却しています。
 その後、どうなったかと言えば、
CPUのコアを一つではなく、二つ以上するなど、
コアを増やす方向になったのです。
 こうして、CPUのスピード競争は終わり、
パソコンの買い替え競争も終わりました。


プログラミング P()14 2018 1 13

「変数の続き」
 変数については、C言語の時に説明しましたが、
重要なことなので、Pythonでも復習しましょう。
 変数とは、データを入れる箱のようなものです。
コンピューターのメモリとは、データの一時記憶領域のことです。
 変数を定義(宣言)することによって、
メモリ空間に「データを入れる箱(領域)」が確保されます。
 次に、変数にデータを入れる時は、
「=」を使って代入すると説明しました。
 具体的な事例を見てみましょう。
たとえば、変数は、「a」、「b」としましょう。
 前々回では、1から10まで足すと、
いくつになるかというプログラムを書きました。
print((1 + 10) * 5)
 しかし、これでは、1から100まで足すとどうなるかと考えた時に、
いちいち式を直す必要があります。
 それでは不便なので、変数を使うのです。
a = 1(「a」という変数に1を代入します)
b = 10(「b」という変数に10を代入します)
print((a + b) * b / 2)
 これならば、「b = 10」のところの「10」を「100」に変えるだけで、
1から100まで足す計算結果が出ます。
a = 1
b = 100
print((a + b) * b / 2)
 もちろん、式を直接直してもよいのですが、
いちいち式を直していると、間違いが多くなりますので、
なるべく式は直さない方がよいのです。
 参考までに、これをC言語で書くと、どうなるか。
#include <stdio.h>
int main()
{
int a = 1;
int b = 10;
printf("%d\n",(a+b)*b/2);
return 0;
}
 なんだか、長くて複雑になります。
「それでは、Pythonのほうがよい」と思うでしょうが、
処理速度になると、PythonよりC言語系のほうが早いです。
動きの速いゲームを作るのは、C言語系のほうがよいと思います。

「モデムが重要アイテムだった」
 今は、モデムという言葉すら気にならないかもしれません。
実は、パソコンをインターネットに接続するのに必要な機器だったのです。
 昔は、光ファイバーがなかったので、
銅線の電話線を使って、インターネットに接続していたのです。
 固定電話機の近くの壁や柱に、
通信ケーブルを差し込む穴が開いていると思いますが、
それがインターネットとの接点だったのです。
 その穴に固定電話機の通信ケーブルを差し込んでしまうと、
インターネットができません。
 そこで、モデムの登場となるのです。
モデムから伸びている通信ケーブルを壁や柱の穴に差し込んで、
一方で、モデムから固定電話用のケーブルとパソコン用のケーブルを分岐させるのです。
 これでも、固定電話を使っている時は、インターネットができません。
昔は、インターネットをやっている時に、電話がかかってくると、
インターネット接続が切断された時代があったと思います。
 そこで、「ISDN」の登場となったのです。
このISDNは、2回線使えますので、
1回線は通話用、1回線はインターネット用に使えました。
速度は、64Kbpsでした。
 今となっては、光ファイバーと比べれると、
かなり遅い速度と言えますが、当時は、画期的に早いと言われたものです。
 その後、「ADSL」が登場して、ISDNは廃れてしまいましたが、
ISDNは、技術的には、優れていたと思います。
ADSLも銅線ケーブルを利用していました。
 一世を風靡したADSLも、光ファイバーの時代においては、
これも消えていく技術になりました。
 しかしながら、自宅が電話局に近い場合は、
光ファイバーよりも、ADSLのほうが速度が出るはずです。


プログラミング P()15 2018 1 20

「関数は便利なもの」
 先週は、変数だったので、今週は、関数を説明しましょう。
「関数」という文字を見ただけで、
数学嫌いの人は、拒絶反応が起こるかもしれません。
 関数というと、学校の数学の時間に見た、
「y = f(x)」というものでしょうか。
 確かに、これだけ見ると、無味乾燥していて、
いかにも数学らしく、たいていの人が数学嫌いになります。
 要するに、学校では、教え方が下手なので、
数学嫌いを大量生産しているのです。
 そもそも、数学の先生は、数学好きでしょう。
数学好きの人が数学を教えることは無理があります。
 そんな人が、数学を生徒に教えても、
すぐに「どうして、そんな簡単なことがわからないのか」と思ってしまうでしょう。
 関数とは、「自動販売機」です。
「自動販売機」に、お金を入れて、ボタンを押すと、
ジュースが出てくるでしょう。
 自動販売機という「関数」は、
いつもいつも、黙々と、そういう「仕事」をしているのです。
 実は、今まで、説明もなく、
「print()」を使ってきましたが、これも「関数」です。
画面に表示するという「仕事」をしています。
a = 1
b = 2
print(a + b)
 「a」という変数に「1」を代入して、
「b」という変数に「2」を代入して、
関数である「print()」を使って、
合計を画面に表示する仕事をしています。
 それでは、他の関数を使ってみましょう。
「len()」という関数です。
 プログラミングでは、文字は、「"」で囲みます。
「Python」という文字を使って練習しましょう。
変数には、文字も代入ができます。
a = "Python"
len(a)
 ここでは、「a」という変数に、
「"Python"」という文字を代入しています。
 「len()」という関数は、文字数を数える関数です。
そうすると、「6」という結果が出ると思います。
 しかし、プログラムを実行してみると、
画面には、何も表示されません。
 ここで、コンピューターの言い分を聞きましょう。
「len()」という関数で文字数を数えましたが、
画面に表示するという命令がなかったので、
何も表示しませんでした。
 仕方ないですね。
コンピューターは、「石頭」です。
 書き直すと、以下のようになります。
a = "Python"
print(len(a))
 なんだか、括弧が続いてわかりにくいですが、
「len()」で数えた結果を「print()」で表示するということです。
 別の書き方をすると、以下のようになります。
a = "Python"
b = len(a)
print(b)
 つまり、いったん「len(a)」の結果を、
「b」という変数に代入して、
「b」に入っている数値を「print()」で表示するものです。
 さて、一番長い英単語を調べてみると、
「Supercalifragilisticexpialidocious」です。
この単語は、ディズニー映画「メリーポピンズ」のために作られた造語だそうです。
a = "Supercalifragilisticexpialidocious"
b = len(a)
print(b)

「いにしえのフィルムカメラ」
 昔は、フィルムカメラが全盛でした。
現像プリントをする「写真屋」が街の至る所にありました。
 私は、「写真屋」というか「カメラ屋」で、
いろいろな種類のフィルムを買っていました。
 フィルムには、感度というものがありました。
「ISO100(ASA100)」から「ISO3200(ASA3200)」まであったと思います。
 感度100は、画質を重視した写真向けで、
感度3200は、天文写真用でした。
 風景写真を撮る時は、感度100で、
星の写真を撮る時は、感度1600か3200という感じでした。
 メーカーは、「富士写真フィルム」が最大手で、
今では、「富士フィルム」と名称を変えています。
 なぜ、フィルムカメラが全盛だったかというと、
確かに、デジタルカメラもありましたが、
最初に発売されたのは、35万画素だったと思います。
 この画素数では、プリンターで、
きれいに印刷にできる大きさは、名刺サイズだったと思います。
それ以上のサイズで印刷すると、粒子の荒い印刷となりました。
 すぐに、100万画素のデジタルカメラが発売されましたが、
画素数が多くなった分、価格が高いものでした。
その値段ならば、フィルムカメラで、よいものが買えました。
 その後、さらに画素数の競争があり、400万画素になると、
A4の大きさの印刷に耐えられる画素数だと言われました。
 今は、普及版でも一眼レフカメラとなると、
2000万画素を超えるようになりました。
 こうして画素数が増えるにつれて、
フィルムカメラは、姿を消していきました。
 何しろ、デジタルカメラは、
フィルムを買いに行く手間がなくなり、
いくら写真を撮っても、お金はかかりません。
 カメラのフィルムは、
36枚撮りで、画質によりますが、
500円から1,000円ぐらいだったと思います。
 フィルム代がかかるほかに、
現像プリントを写真屋に頼む必要がありました。
 そういうわけで、「写真屋さん45」という店が、
コンビニエンスストアと同じくらいありました。
 カメラに興味がない人でも、
旅行に行けば、カメラで記念撮影をしますので、
現像プリントをする写真屋が必要だったのです。
 昔は、旅行の必要携行品にフィルムがありました。
フィルムを忘れると、記念撮影ができません。
もちろん、お土産店は、フィルムを売っていました。
 私は、20代のころ、欧州旅行をした時に、
一眼レフカメラの「OM1」とともに、
フィルムをたくさん旅行かばんに入れて出かけました。
 古き良き時代。
フィルムカメラの思い出は、いくらでもあります。


プログラミング P()16 2018 1 27

「関数を作る」
 前号では、関数の使い方を書きましたので、
今回は、関数の作り方を書きます。
 関数を作るというと、
なんだか難しく感じますが、
要するに、「楽をする」ために作るのが、
関数に対する基本的な考え方です。
 以前、1から10まで合計するプログラムを書きましたが、
その都度、プログラムを書いていては、面倒くさいでしょう。
a = 1
b = 10
print((a + b) * b / 2)
 そこで、これを関数にしてしまうのです。
まず、関数には、「名前」をつける必要があります。
 ここでは、合計を求める関数なので、
なんという名前にしましょうか。
 数学では、こうした場合は、「Σ」という記号を使うので、
関数には、「sigma」という名前をつけましょう。
 関数を作るには、
「これから関数を作る」と宣言する必要があります。
 それが、「def」です。
これは、「define」の略で、「定義する」という意味です。
 では、さっそく作りましょう。
def sigma(a,b):
  return (a + b) * b / 2
 ここで関数がわからなくなった人は、
「関数とは、自動販売機のようなものである」と思い出してください。
 「sigma」という自動販売機に「a」や「b」というコインを入れると、
「(a + b) * b / 2」の計算結果(ジュース)を「return」で返してくれるのです。
 これで、「sigma」という関数(自動販売機)ができたはずです。
「a」に「1」、「b」に「10」を入れれば、
「55」という結果を返してくれるはずです。
c = sigma(1,10)
print(c)
 それでは、1から100まで合計すると、どうなるか。
c = sigma(1,100)
print(c)
 これを実行すると、
「5050」という結果を返してくれます。
 さて、関数を作った時に、「Python」特有の文法が出ています。
Pythonでは、字下げ(インデント)をすると、
字下げしてある行は、関数の中身(範囲)だと認識するのです。
そういうわけで、「return」の行が字下げしてあるのです。
Pythonでは、字下げも文法の一部だと覚えてください。

「MS-DOSって何?」
 「MS-DOS」とは、マイクロソフト社のOS(Operating System)です。
マイクロソフト社のOSというと、「Windows」を連想しますが、
「Windows」は、ハードディスクを土台としたシステムです。
 「DOS」とは、「Disk Operating System」の略だったと思います。
この「Disk」とは、フロッピーディスクのことです。
昔は、ハードディスクが極めて高価なものでした。
たとえば、たった20MBのハードディスクが5万円以上だった時代があるのです。
 当時は、フロッピーディスクが主流で、
640KBのフロッピーディスクか1MBのフロッピーディスクに、
データどころか、ソフトウェアも入れていた時代でした。
 そういうわけで、「MS-DOS」も、
フロッピーディスク入りのOSだったのです。
 やがて、「Windows1.0」が登場しますが、
何しろ、「Windows」といっても、
フロッピーディスクを使うOSだったので、
やたらとフロッピーディスク駆動装置が「ギイギイ」と音を立てるだけで、
前に進まないOSでした。
 しかし、今と違って、当時は、ゆっくりと時間が流れていましたので、
コーヒーでも飲みながら、ゆっくりと動く画面を眺めていたのです。


プログラミング P()17 2018 2 3

「ループ(繰り返し処理)」
 人間は、退屈な「繰り返し処理」を嫌うでしょうが、
コンピューターは、こういうことが得意です。
 前号では、1から10まで合計すると、いくつになるかについて、
公式を使って、計算しました。
a = 1
b = 10
print((a + b) * b / 2)
 今回は、これを「繰り返し処理」で計算してみましょう。
ここでは、繰り返し文の「for文」を使います。
計算結果を「sigma」とします。
sigma = 0
for i in range(11):
   sigma = sigma + i
print(sigma)
 前号でも書きましたが、
Pythonでは、字下げ(インデント)も文法になります。
 つまり、インデントされている行は、
繰り返し処理の範囲になります。
 一方、print(sigma)は、インデントされていませんので、
繰り返し処理の対象ではありません。
 さて、その前に、疑問に思ったのは、
「range(11)」の「11」でしょうか。
1から10まで合計するので、「10」のはずであると思ったでしょうか。
 ここが、コンピューター特有のものとなります。
実は、コンピューターやプログラミングでは、
「0,1,2,3,4,5,6,7,8,9,10」なので、11個あるのです。
つまり、「0」から始まるので、一つ多くなるのです。
 そういうわけで、「range」という機能について、
だいたい見当がつくと思います。
 11個の箱が用意されて、
「0,1,2,3,4,5,6,7,8,9,10」という数字が入っているのです。
 これらの数字が順番に計算式(sigma = sigma + i)に入っていって、
合計が積算されたのです。
 ちなみに、このような計算をC言語で書くと、
以下のようになります。
#include <stdio.h>
int main()
{
  int i;
  int sigma;
  for (i = 1;i <= 10;i++){
    sigma = sigma + i;
  }
  printf("%d\n",sigma);
  return 0;
}
 「C言語は、なんて面倒くさい言語だろう」と思ったでしょうか。
しかし、処理速度は、Pythonより、C言語の方が断然早いのです。
スピードを求めるならば、C言語でしょう。

「PC/AT互換機って何?」
 これだけ見ると、何のことだがわかりませんが、
英語に直すと、見当がつきます。
「IBM PC/AT Compatibles」となります。
つまり、IBMが作った「PC AT」というパソコンの互換機となります。
 日本では、「DOS/V機」と呼ばれることが多かったと思います。
そういう名称の雑誌があり、私は愛読者でした。
 パソコンの本家本元は、IBMの「PC AT」というパソコンでしたが、
IBMがパソコンを普及させるために、
アーキテクチャ(設計や仕様)を公開したのです。
 そこで、多くのメーカーがパソコン市場に参入して、
IBMの「PC AT」互換機を安く大量に生産した結果、
本家本元の「PC AT」を超えて、
互換機の方が、「世界標準」となってしまいました。
 互換機の世界では、「安価で大量生産」が主流となりましたので、
その後、IBMは、パソコン分野から撤退することになりました。
 こうして「互換機市場」が急拡大するとともに、
パソコンメーカーではない個人が、
CPUやハードディスクなどの部品を集めてきて、
自作のパソコンを作ることができるようになったのです。


プログラミング P()18 2018 2 10

「whileというループ(繰り返し処理)」
 前号では、「for文」を使って「繰り返し処理」を書きましたが、
日本人にとって、「for」という単語は、
「何々のために」という意味を連想してしまい、
しっくりこないでしょう。
 そこで、もうひとつの「繰り返し処理」である「while文」を使います。
「while」という単語ならば、「繰り返し処理」を連想するでしょう。
 それでは、1から10まで合計すると、いくつになるかについて、
前号では、「for文」を使って書きました。
計算結果を「sigma」とします。
sigma = 0
for i in range(11):
   sigma = sigma + i
print(sigma)
 これを「while文」に書き換えると、どうなるか。
まず、数を数える「i」という変数を用意します。
i = 1
sigma = 0
while i < 11:
   sigma = sigma + i
   i = i + 1
print(sigma)
 前号でも書きましたが、
字下げ(インデント)されている行は、
繰り返し処理の範囲になります。
 ここでは、「sigma = sigma + i」と、
「i = i + 1」が繰り返し処理の範囲です。
 さて、こうしてみると、「for文」の方がシンプルです。
これは、「range」という機能を使っているからでしょう。
 ちなみに、このような計算をC言語で書くと、どうなるか。
C言語にも、「while文」があります。
#include <stdio.h>
int main()
{
  int i = 1;
  int sigma = 0;
  while (i < 11){
    sigma = sigma + i;
    i = i + 1;
  }
  printf("%d\n",sigma);
  return 0;
}


プログラミング P()19 2018 2 17

「条件分岐」
 これは、わかりにくい言葉ですが、
プログラムの実例を見た方がわかりやすいと思います。
 条件分岐とは、「if文」を使って処理を分けていくものであり、
コンピューターが得意とする分野だと思います。
score = 87
if score >= 80:
  print("A")
 これは、テストの点数(score)が、80点以上ならば、
「A」と表示するプログラムです。
80点以上の「以上」は、「>=」という記号を使います。
 ここでは、プログラムを簡単にするために、
最初に「score」という変数に「87点」を入れてあります。
 これでは、単純なプログラムなので、
少し複雑にしてみましょう。
score = 75
if score >= 80:
  print("A")
else:
  print("B")
 このプログラムでは、
80点以上は「A」で、80点未満は「B」となります。
 もう少し複雑にしてみましょう。
score = 67
if score >= 80:
  print("A")
elif score >= 70:
  print("B")
else:
  print("C")
 これは、テストの点数が、80点以上ならば、
「A」と表示して、
テストの点数が、70点以上ならば、
「B」と表示して、
テストの点数が、それ以外の点数ならば、
つまり、70点未満ならば、
「C」と表示するプログラムです。
 このプログラムでは、「elif」という記号が登場しました。
これは造語で、「else if」の短縮形です。

「栄光のPC-9801」
 確か、「Windows95」が発売される前に、
いや「Windows3.1」が普及する前は、
つまり、1980年代は、NECのPC-9801の黄金時代でした。
おそらく市場シェアは、95%以上あったと思います。
 私も「PC-9801VX」を買いました。
CPUは、Intelの「80286」とNECの「V30」が搭載されていました。
「80286」と「V30」は、スイッチで切り替えたと思います。
 この時期が全盛だったかもしれません。
やがて、「PC/AT互換機(DOS/V機)」が登場して、
「Windows」が主流になってくると、
「PC/AT互換機の規格を満たしていて、Windowsが動けば、
どのメーカーでもよい」となってしまったのです。
 そのうえ、PC/AT互換機は、安価で大量生産が主流でしたので、
価格面でも、「PC-9801」は対抗できなくなったのです。
こうして、パソコンは、高級品から日用品になり、価格競争が始まったのです。


プログラミング P()20 2018 2 24

「連載は終了です。あとは、不定期で」
 C言語については、「C()1」から「C()10」で、
Python言語については、「P()11」から「P()20」まで、
「入門の入門」レベルは書いたと思いますので、
連載という形では終了します。
 今後は、不定期というか、随時という形で、
プログラミング言語関係の文章を書きます。
「COBOL言語」、「Java」、「C#」などを不定期で書きます。

「import機能」
 Pythonには、「import」という機能が特徴的です。
これは、一種の「拡張機能」のようなものです。
 もちろん、他の言語にも、似たような機能はありますが、
Pythonのimportは、充実していると思います。
 ちょっと違いますが、似たようなものとして、
C言語では、プログラムの冒頭に、
たいてい、「#include <stdio.h>」があります。
 これは、今まで説明もなく使っていましたが、
処理結果を画面に表示する「printf」機能を、
「#include <stdio.h>」で読み込んでいます。
 では、さっそくプログラムを見てみましょう。
import calendar
print(calendar.month(2018,2))
 だいたい見当がつくかと思いますが、
「calendar」という機能を読み込んで、
2018年2月という「month」を表示します。
 「卓上カレンダーを見れば済む?」
確かに、その通りですが、
未来のカレンダーも表示できます。
import calendar
print(calendar.month(2020,2))
これは、2020年2月のカレンダーになります。
 「import」機能に興味を持ったならば、
「http://docs.python.jp/2/library/」を見てください。
 かなり豊富な在庫がありますが、
きっと興味を引くものが見つかると思います。

「相性がある」
 最近は、少なくなったと聞きますが、
パソコンの部品を秋葉原で集めてきて、
パソコンを自作する場合に、
部品同士の相性が悪くて、お互いに認識しないで、
せっかく組み立てたパソコンが動かないということがありました。
最近は、そういうことは少なくなったと聞きます。
 考えてみれば、これは奇跡的かもしれません。
パソコンを構成する部品は数多くありますが、
部品のメーカーは全く違うわけで、
世界中から、安くて優秀な部品をかき集めて、
パソコンを作っているようなものですので、
まるで「指揮者のいないオーケストラ」のようなものです。
 さて、プログラミング言語にも相性があります。
プログラミング言語は、星の数ほどあります。
古くは、「FORTRAN」や「COBOL」、
メジャーなところでは、
「C」、「Java」、「C++」、「C#」、
最近では、「Python」があります。
 しかしながら、プログラミング言語にも相性があって、
私は、最初は「Java」には、なじめませんでした。
要するに相性が悪かったのです。
 そういうわけで、あるプログラミング言語を勉強して、
たとえ挫折しても、「私はプログラミングに向いていない」と思わないでください。
他の言語とは相性がよくて、うまく行く場合があるからです。
 片っ端から、いろいろな言語に挑戦して、
相性のよい言語を見つけるという方法があるかもしれません。













































































トップページへ戻る